package com.zw.a.basic.a09.demo03_exercise;

import java.util.Arrays;

//案例: 演示字符串数字排序.
public class Demo01 {
    public static void main(String[] args) {
        /*
            需求:
                1.已知字符串String s = "91 27 45 38 50";
                2.请通过代码实现最终输出结果是: "27, 38, 45, 50, 91"
            思路:
                1. String    ->   String[]          "91 27 45 38 50"  ->   {"91", "27"...};        String#split();
                2. String[]  ->   int[]             {"91", "27"...}   ->   {91, 27...}             遍历, Integer.parseInt();
                3. 对int[]数组进行排序.             {27, 38, 45...}                                Arrays#sort()
                4. int[]  ->   String               "27, 38, 45, 50, 91"                           StringBuilder, 遍历
         */

        //1. 定义变量, 记录要操作的字符串.
        String s = "91 27 45 38 50";
        //2. 把字符串转成其对应的字符串数组.
        String[] strArray = s.split(" ");
        //3. 定义和字符串数组长度一模一样的int[]
        int[] arr = new int[strArray.length];
        //4. 遍历字符串数组, 获取到每一个字符串.
        for (int i = 0; i < arr.length; i++) {
            //strArray[i]就是: 每一个字符串类型的数字,   "91", "27"
            //5. 把对应的字符串类型的整数转成其对应的 int类型的整数, 并填充到int[]中.
            arr[i] = Integer.parseInt(strArray[i]);
        }
        //6. 对int[]进行排序.
        Arrays.sort(arr);
        //7. 把排序后的结果, 拼接成指定的格式.
        //方式1: 手动拼接.
       /* StringBuilder sb = new StringBuilder();
        for (int i = 0; i < arr.length; i++) {
            sb.append(arr[i]);
            if (i != arr.length - 1)
                sb.append(", ");
        }
        //System.out.println(sb.toString());
        System.out.println(sb);*/

        //方式二: String#substring()方法, 分解版.
        String s1 = Arrays.toString(arr);           //  "[27, 38, 45, 50, 91]"
        //前边是起始索引, 后边是结束索引
        String result = s1.substring(1, s1.length() - 1);    //包左不包右
        System.out.println(result);
        System.out.println("-------------------");

        //方式3: 合并版
        String s2 = Arrays.toString(arr).substring(1, s1.length() - 1);
        System.out.println("s2: " + s2);
    }
}
